package h0801;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.StringJoiner;

public class SortString2 {
    // 输入获取
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String[] arr = sc.nextLine().split(" ");

        System.out.println(getResult(arr));
    }

    // 算法入口
    //TODO 这个是先排序后去重
    public static String getResult(String[] arr) {
        // 对数组进行排序，忽略大小写
        Arrays.sort(arr, (a, b) -> a.toLowerCase().compareTo(b.toLowerCase()));

        // 使用 LinkedList 来存储排序后的唯一单词
        LinkedList<String> stack = new LinkedList<>();
        // 将第一个单词加入 stack
        stack.add(arr[0]);

        // 遍历剩余的单词
        for (int i = 1; i < arr.length; i++) {
            String s = arr[i];
            // 获取 stack 最后一个单词并转为小写
            String top = stack.getLast().toLowerCase();
            // 将当前单词转为小写
            String add = s.toLowerCase();
            // 如果 stack 最后一个单词和当前单词相同（忽略大小写），则跳过
            if (top.equals(add)) continue;
            // 否则将当前单词加入 stack
            stack.add(s);
        }

        StringJoiner sj = new StringJoiner(" ");
        for (String s : stack) sj.add(s);
        return sj.toString();
    }
}
